// package hn.cch.predicate;
//
// import org.apache.commons.lang3.StringUtils;
// import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory;
// import org.springframework.stereotype.Component;
// import org.springframework.web.server.ServerWebExchange;
//
// import java.util.Arrays;
// import java.util.List;
// import java.util.function.Predicate;
//
//
// @Component
// public class ParamRoutePredicateFactory extends AbstractRoutePredicateFactory<Param> {
//
//     public ParamRoutePredicateFactory() {
//         super(Param.class);
//     }
//
//     @Override
//     public List<String> shortcutFieldOrder() {
//         //这里的顺序要跟配置文件中的参数顺序一致
//         return Arrays.asList("min", "max"); }
//
//
//     @Override
//     public Predicate<ServerWebExchange> apply(Param param) {
//         return new Predicate<ServerWebExchange>() {
//             @Override
//             public boolean test(ServerWebExchange serverWebExchange) {
//                 String paramString = serverWebExchange.getRequest().getQueryParams().getFirst("param");
//                 if (StringUtils.isNotEmpty(paramString)) {
//                     Integer paramInteger = Integer.parseInt(paramString);
//                     return paramInteger > param.getMin() && paramInteger < param.getMax();
//                 }
//                 return true;
//             }
//         };
//     }
// }
//
//
//
// class Param {
//     private int min;
//     private int max;
//
//     public int getMin() {
//         return min;
//     }
//
//     public void setMin(int min) {
//         this.min = min;
//     }
//
//     public int getMax() {
//         return max;
//     }
//
//     public void setMax(int max) {
//         this.max = max;
//     }
// }
